package com.peaksport.framework.vo;

import java.io.Serializable;
import java.util.Date;

import com.peaksport.framework.util.PKJSONUtils;
import com.peaksport.framework.uuid.PKUuid;

import lombok.Getter;
import lombok.Setter;


/**
 * 
 * 统一kafak JSON 消息格式
 * JSON格式:
 *   JSONKafkaMsg{
 *   	uniqueId: 唯一ID
 *   	senderId: 消息发送用户Id
 *   	sendTime: 消息发送时间
 *   	clientId: 第三方客户端id,如果由第三方登录发送
 *   	topic: kafka主题
 *   	key: kafka key 
 *      dataClassName: 消息体类型名称
 *   	data: 消息体
 *      consumeCallback:  消息消费后的回调方法
 *   }
 * 
 * 
 * @author jinbin_guo  2019年6月5日 下午4:52:11
 *
 */
@SuppressWarnings("serial")
@Getter
@Setter
public class JSONKafkaMsg implements Serializable {
	
	/** 生成id的uuidType */
	public static final String uuidType = "5CBC77DF";
	/** 唯一ID */
	private String uniqueId;
	/** 消息发送用户Id*/
	private String senderId;
	/** 消息发送时间*/
	private Date sendTime;
	/** 第三方客户端id*/
	private String clientId;
	/** kafka主题 */
	private String topic;
	/** kafka key */
	private String key;
	/** 消息体类型名称*/
	private String dataClassName;
	/** 消息体*/
	private Object data;
	/** 消息消费后的回调方法*/
	private String consumeCallback;
	
	public static JSONKafkaMsg create() {
		JSONKafkaMsg jsonKafkaMsg = new JSONKafkaMsg();
		jsonKafkaMsg.setUniqueId(PKUuid.create(uuidType).toString());
		return jsonKafkaMsg;
	}
	
	public String toJSON() {
		return PKJSONUtils.toJSON(this);
	}
	
	
}
